home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 101-125 / disk_114 / cdecl / cdlex.l < prev    next >
Text File  |  1992-05-06  |  1KB  |  57 lines

  1. %{
  2. #include <ctype.h>
  3.  
  4. char *visible();
  5. %}
  6. N    [0-9]
  7. A    [A-Z_a-z]
  8. AN    [0-9A-Z_a-z]
  9. %%
  10. array        return ARRAY;
  11. as            return AS;
  12. cast        return CAST;
  13. declare        return DECLARE;
  14. explain        return EXPLAIN;
  15. function    return FUNCTION;
  16. help        return HELP;
  17. into        return INTO;
  18. of            return OF;
  19. pointer        return POINTER;
  20. returning    return RETURNING;
  21. to            return TO;
  22.  
  23. char        { yylval.dynstr = ds(yytext); return CHAR; }
  24. double        { yylval.dynstr = ds(yytext); return DOUBLE; }
  25. enum        { yylval.dynstr = ds(yytext); return STRUCTUNION; }
  26. float        { yylval.dynstr = ds(yytext); return FLOAT; }
  27. int            { yylval.dynstr = ds(yytext); return INT; }
  28. long        { yylval.dynstr = ds(yytext); return LONG; }
  29. short        { yylval.dynstr = ds(yytext); return SHORT; }
  30. struct        { yylval.dynstr = ds(yytext); return STRUCTUNION; }
  31. union        { yylval.dynstr = ds(yytext); return STRUCTUNION; }
  32. unsigned    { yylval.dynstr = ds(yytext); return UNSIGNED; }
  33.  
  34. {A}{AN}*    { yylval.dynstr = ds(yytext); return NAME; }
  35. {N}+        { yylval.dynstr = ds(yytext); return NUMBER; }
  36.  
  37. [\t ]        ;
  38. [*[\]()\n]        return *yytext;
  39. .            {
  40.                 printf("bad character '%s'\n",visible(*yytext));
  41.                 return *yytext;
  42.             }
  43. %%
  44. char *
  45. visible(c)
  46. {
  47.     static char buf[5];
  48.  
  49.     c &= 0377;
  50.     if (isprint(c)) {
  51.         buf[0] = c;
  52.         buf[1] = '\0';
  53.     } else
  54.         sprintf(buf,"\\%02o",c);
  55.     return buf;
  56. }
  57.